// utils/answerUtil.js

/**
 * 创建答题记录
 * @param {Object} params - 答题参数
 * @param {string} params.name - 学生姓名
 * @param {string} params.cardId - 身份证号
 * @param {string} params.instructorName - 教员姓名
 * @param {number} params.instructorId - 教员id
 * @param {number} params.qosId - 问题ID
 * @param {number} params.anserTime - 答题时间(秒)
 * @param {number} params.isRight - 是否正确,0错误，1正确
 * @param {string} params.option - 考生答案
 * @param {string} params.classify - 试题分类
 * @param {number} params.paperId - 试卷id
 * @param {string} params.stem - 题干
 * @param {string} params.accuracy - 正确率
 * @param {string} params.timeStemp - 操作答题时间
 * @param {string} params.everyTxt - 词汇文本
 * @param {string} params.rightOption - 正确答案
 * @param {number} params.score - 得分
 * @param {string} params.deptId - 部门
 * @param {string} params.areaId - 省id
 * @param {string} params.answerWork - 答题单位
 * @returns {Object} 答题记录对象
 */

function createAnswerRecord(params) {
  return {
    qosId: params.qosId || 0,
    anserTime: params.anserTime || 0,
    isRight: params.isRight || 0,
    option: params.option || '',
    classify: params.classify || '',
    stem: params.stem || '',
    accuracy: params.accuracy || '',
    timeStemp: params.timeStemp || '',
    everyTxt: params.everyTxt || '',
    rightOption: params.rightOption || '',
    score: params.score || 0,
  };
}

/**
 * 保存答题记录到缓存
 * @param {Array} answerRecords - 答题记录数组
 * @returns {boolean} 是否保存成功
 */
function saveAnswerRecords(answerRecords) {
  try {
    wx.setStorageSync('answerRecords', answerRecords);
    return true;
  } catch (error) {
    console.error('保存答题记录失败', error);
    return false;
  }
}

/**
 * 从缓存中获取答题记录
 * @returns {Array} 答题记录数组
 */
function getAnswerRecords() {
  try {
    return wx.getStorageSync('answerRecords') || [];
  } catch (error) {
    console.error('获取答题记录失败', error);
    return [];
  }
}

/**
 * 添加答题记录
 * @param {Object} newRecord - 新的答题记录
 * @returns {Array} 更新后的答题记录数组
 */
function addAnswerRecord(newRecord) {
  const records = getAnswerRecords();
  
  const updatedRecords = [...records, newRecord];
  saveAnswerRecords(updatedRecords);
  return updatedRecords;
}

/**
 * 清除答题记录
 */
function clearAnswerRecords() {
  try {
    wx.removeStorageSync('answerRecords');
  } catch (error) {
    console.error('清除答题记录失败', error);
  }
}

/**
 * 计算答题时长
 * @param {number} startTime - 开始时间
 * @param {number} endTime - 结束时间
 * @returns {number} 答题时长(秒)
 */
function calculateAnswerTime(startTime, endTime) {
  if (!startTime || !endTime) return 0;
  // 计算毫秒差值并转换为秒，保留整数部分
  return Math.max(0, Math.floor(endTime - startTime));
}

module.exports = {
  createAnswerRecord,
  saveAnswerRecords,
  getAnswerRecords,
  addAnswerRecord,
  clearAnswerRecords,
  calculateAnswerTime
};
